From d9e6395ee98c5c34ff414aa83638b096693b2def Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 28 Apr 2014 12:53:36 +0200 Subject: [PATCH] gesture: Protect against odd window hierarchies If no match is found with the gesture widget when poking the event window parents, bail out safely instead of falling in an infinite loop. This was seen on Mutter. --- gtk/gtkgesture.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk/gtkgesture.c b/gtk/gtkgesture.c index e1f03d8dd9..30d944a76c 100644 --- a/gtk/gtkgesture.c +++ b/gtk/gtkgesture.c @@ -318,7 +318,7 @@ _update_widget_coordinates (GtkGesture *gesture, gdk_event_get_coords (data->event, &event_x, &event_y); window = data->event->any.window; - while (window != event_widget_window) + while (window && window != event_widget_window) { gdk_window_get_position (window, &wx, &wy); event_x += wx; @@ -326,6 +326,9 @@ _update_widget_coordinates (GtkGesture *gesture, window = gdk_window_get_effective_parent (window); } + if (!window) + return; + if (!gtk_widget_get_has_window (event_widget)) { gtk_widget_get_allocation (event_widget, &allocation); -- 2.30.2